/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
Universidad del Valle de Guatemala
Algoritmos y Estructura de Datos
Luis Ernesto Orozco Godinez
CarnÈ:10382
14 de Julio del 2011
Hoja de Trabajo #1
Clase: Hoja1
 * descripcion: Esta clase "rellenara" los metodos que se implemetaron en la interfaz creada
 * la cual se obtuvo al implementar dicha clase
*/

package hoja1;

/**
 *
 * @author luisorozco
 */

//se importan las bibliotecas respectivas para poder restrigir los decimales y poder manejar(ingresar datos) el teclado
import java.text.DecimalFormat;
import java.util.Scanner;

// se implementa la interfaz para poder rellenar los metodos de la interfaz

public class Hoja1 implements NuestraInterfaz
{

// Atributos que se utilizaran en algunos metodos de la clase
    Scanner ingreso = new Scanner(System.in);

    private boolean prendido;
    private boolean amfm;
    
    private double fm;
    private int am;
   
    
    private String seleccion, estacion, onoff;
    private double bfm1,bfm2,bfm3,bfm4,bfm5,bfm6,bfm7,bfm8,bfm9,bfm10,bfm11,bfm12;
    private int bam1,bam2,bam3,bam4,bam5,bam6,bam7,bam8,bam9,bam10,bam11,bam12;
    int[] ams= new int[12];
    double[] fms= new double[12];
    
    
    DecimalFormat decimales = new DecimalFormat("0.##"); //numero de decimales que tendra que son 2
    
    
    // Overloading al contructor de la clase
    public Hoja1(){
        // se inicilizan valores a los atributos
        prendido=false;
        amfm=false;
        am=530;
        fm=87.9;
        seleccion="530";
        estacion="AM";
        onoff="Apagada";
    }
    
    
    @Override
    
    // metodo booleano en el cual se decidira si se prende la radio o no.
    public boolean power(){
        
    prendido=!prendido; 
       if(prendido) {
       System.out.println("La Radio esta encendida");
       onoff="Encendida";
       }    
       
       else{
       System.out.println("La Radio esta apagada");
       onoff="Apagada";
       
       }
       
       return prendido;
    
    }
    
    @Override
    
    // metodo cambio, este metodo hara que el usuario cambio de estacion siempre en cuando
    // la radio este encendida
    public boolean cambio(){
    if(prendido){
        amfm=!amfm;
                if(amfm){
                    estacion="FM";
                    seleccion="" + decimales.format(fm) + "";
                            
                }
                
                else {
                    estacion="AM";
                    seleccion=""+ am + "";
                         
                }
    
    }
                
    else{
    System.out.println("La radio NO esta encendida");
    }
    return amfm;
    }
    
    @Override
    // este metodo fw, hara que el usuario cambie de estacion segun la frecuencia en la
    // que este siempre en cuando la radio este encendida.
    public void fw(){
    
        if (prendido){
            // si la radio esta en fm, el usuario solo podra cambiar cada 0.2, por ejemplo
            // que este en la 89.7 la siguiente estacion sera 90.1
            if(amfm){
                 fm=fm+0.2;
                 if (fm<87.9)
                     fm=107.9;
                 if (fm>107.9)
                     fm=87.9;
                 seleccion=""+decimales.format(fm)+"";
                 System.out.println("La estacion FM es :" + decimales.format(fm));
            }
            // si la radio esta en am, el usuario solo podra cambiar cada 10, por ejemplo
            // que este en la 890 la siguiente estacion sera 900
            else{
                am=am+10;
                if (am<530)
                    am=1610;
                if (am>1610)
                    am=530;
                seleccion=""+am+"";
                System.out.println("La estacion AM es :"+ am);
               
            }
        }
        // si la radio esta apagada envia un mensaje
        else{
            System.out.println("La radio esta apagada");
        }
    
    }
    
    
    
    
    @Override
    // metodo cambio de regreso, este metodo hara que el usuario cambio de estacion siempre en cuando
    // la radio este encendida.
    public void bw(){
        if (prendido){
            // si la radio esta en fm, el usuario solo podra regresar cada 0.2, por ejemplo
            // que este en la 89.7 la siguiente estacion sera 89.5
            if(amfm){
                 fm=fm-0.2;
                 if (fm<87.9)
                     fm=107.9;
                 if (fm>107.9)
                     fm=87.9;
                seleccion=""+decimales.format(fm)+"";
                System.out.println("La estacion FM es :"+ decimales.format(fm));
            }
            // si la radio esta en am, el usuario solo podra regresar cada 10, por ejemplo
            // que este en la 890 la siguiente estacion sera 880
            else{
                am=am-10;
                if (am<530)
                    am=1610;
                if (am>1610)
                    am=530;
                seleccion=""+am+"";
                System.out.println("La estacion AM es :"+ am);
               
            }
        }
        //si la radio esta apagada envia un mensaje
        else{
            System.out.println("La radio esta apagado");
        }
        
    
    }
    
    
    @Override
    // el metodo store, se encargara de guardar una estacion en unos de los botones de 1-12
    public void store(int boton){
    
       
    if (prendido){
        // si esta en fm la radio, podra disponer 12 botones para poder guardar una estacion
        if (amfm){
            
            switch(boton){
                case 1://
                    System.out.println("\n.: Se guardo en el Boton 1 :.\n");
                    bfm1=fm;
                    break;
                case 2://
                    System.out.println("\n.: Boton 2 :.\n");
                    bfm2=fm;
                    ;
                    break;
                case 3://
                    System.out.println("\n.: Boton 3 :.\n");
                    bfm3=fm;
                    break;
                case 4://
                    System.out.println("\n.: Boton 4 :.\n");
                    bfm4=fm;
                    break;
                case 5://
                    System.out.println("\n.: Boton 5 :.\n");
                    bfm5=fm;
                    break;
                case 6://
                    System.out.println("\n.: Boton 6 :.\n");
                    bfm6=fm;
                    break;
                
                 case 7://
                    System.out.println("\n.: Se guardo en el Boton 7 :.\n");
                    bfm1=fm;
                    break;
                case 8://
                    System.out.println("\n.: Boton 2 :.\n");
                    ;
                    break;
                case 9://
                    System.out.println("\n.: Boton 3 :.\n");
                    bfm9=fm;
                    break;
                case 10://
                    System.out.println("\n.: Boton 4 :.\n");
                    bfm10=fm;
                    break;
                case 11://
                    System.out.println("\n.: Boton 5 :.\n");
                    bfm11=fm;
                    break;
                case 12://
                    System.out.println("\n.: Boton 6 :.\n");
                    bfm12=fm;
                    break;
                default:
                    System.out.println("\nERROR: ~~> Boton invalida. :O(\n");            
            }
        }
        // si esta en am la radio, tambien dispondra de 12 botones para guardar de estacion
        else{
            System.out.println("En que Boton quiere guardar la estacion actual AM (solo del 1 al 6)?: ");
           
            switch(boton){
                case 1://
                    System.out.println("\n.: Boton 1 :.\n");
                    bam1=am;
                    break;
                case 2://
                    System.out.println("\n.: Boton 2 :.\n");
                    bam2=am;
                    break;
                case 3://
                    System.out.println("\n.: Boton 3 :.\n");
                    bam3=am;
                    break;
                case 4://
                    System.out.println("\n.: Boton 4 :.\n");
                    bam4=am;
                    break;
                case 5://
                    System.out.println("\n.: Boton 5 :.\n");
                    bam5=am;
                    break;
                case 6://
                    System.out.println("\n.: Boton 6 :.\n");
                    bam6=am;
                    break;
                case 7://
                    System.out.println("\n.: Boton 7 :.\n");
                    bam7=am;
                    break;
                case 8://
                    System.out.println("\n.: Boton 8 :.\n");
                    bam8=am;
                    break;
                case 9://
                    System.out.println("\n.: Boton 9 :.\n");
                    bam9=am;
                    break;
                case 10://
                    System.out.println("\n.: Boton 10 :.\n");
                    bam10=am;
                    break;
                case 11://
                    System.out.println("\n.: Boton 11 :.\n");
                    bam11=am;
                    break;
                case 12://
                    System.out.println("\n.: Boton 12 :.\n");
                    bam12=am;
                    break;
                default:
                    System.out.println("\nERROR: ~~> Boton invalida. :O(\n");            
            
        
        }
        
    }
    }
    // si la radio esta apagada envia un mensaje
    else{
        System.out.println("La radio NO esta encendida");
    }
    }
    
    @Override
    // el metodo select se encargara de abrir o seleccionar la radio guardada por el usuario en 
    //alguno de los 12 botones
    public void select(int boton){
    
    if (prendido){
        
        // si la radio esta en fm, solo podra abrir la seleccion o la estacion guardada en alguno de los
        //12 botones
        if (amfm){
           
                switch(boton){
                case 1://
                    System.out.println("\n.: Se guardo en el Boton 1 :.\n");
                    fm=bfm1;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 2://
                    System.out.println("\n.: Boton 2 :.\n");
                    fm=bfm2;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 3://
                    System.out.println("\n.: Boton 3 :.\n");
                    fm=bfm3;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 4://
                    System.out.println("\n.: Boton 4 :.\n");
                    fm=bfm4;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 5://
                    System.out.println("\n.: Boton 5 :.\n");
                    fm=bfm5;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 6://
                    System.out.println("\n.: Boton 6 :.\n");
                    fm=bfm6;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 7://
                    System.out.println("\n.: Se guardo en el Boton 7 :.\n");
                    fm=bfm7;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 8://
                    System.out.println("\n.: Boton 8 :.\n");
                    fm=bfm8;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 9://
                    System.out.println("\n.: Boton 9 :.\n");
                    fm=bfm9;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 10://
                    System.out.println("\n.: Boton 10 :.\n");
                    fm=bfm10;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 11://
                    System.out.println("\n.: Boton 11 :.\n");
                    fm=bfm11;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                case 12://
                    System.out.println("\n.: Boton 12 :.\n");
                    fm=bfm12;
                    seleccion="" + decimales.format(fm) + "";
                    break;
                default:
                    System.out.println("\nERROR: ~~> Boton invalida. :O(\n");            
            }

            
                
                    
                  
                       
            }
        
        // si la radio esta en am, solo podra abrir la seleccion o la estacion guardada en alguno de los
        //12 botones
        else{
            System.out.println("En que Boton quiere guardar la estacion actual AM (solo del 1 al 12)?: ");
           switch(boton){
                case 1://
                    System.out.println("\n.: Boton 1 :.\n");
                    am=bam1;
                    seleccion="" + am + "";
                    break;
                case 2://
                    System.out.println("\n.: Boton 2 :.\n");
                    am=bam2;
                    seleccion="" + am + "";
                    break;
                case 3://
                    System.out.println("\n.: Boton 3 :.\n");
                    am=bam3;
                    seleccion="" + am + "";
                    break;
                case 4://
                    System.out.println("\n.: Boton 4 :.\n");
                    am=bam4;
                    seleccion="" + am + "";
                    break;
                case 5://
                    System.out.println("\n.: Boton 5 :.\n");
                    am=bam5;
                    seleccion="" + am + "";
                    break;
                case 6://
                    System.out.println("\n.: Boton 6 :.\n");
                    am=bam6;
                    seleccion="" + am + "";
                    break;
                case 7://
                    System.out.println("\n.: Boton 7 :.\n");
                    am=bam7;
                    seleccion="" + am + "";
                    break;
                case 8://
                    System.out.println("\n.: Boton 8 :.\n");
                    am=bam8;
                    seleccion="" + am + "";
                    break;
                case 9://
                    System.out.println("\n.: Boton 9 :.\n");
                    am=bam9;
                    seleccion="" + am + "";
                    break;
                case 10://
                    System.out.println("\n.: Boton 10 :.\n");
                    am=bam10;
                    seleccion="" + am + "";
                    break;
                case 11://
                    System.out.println("\n.: Boton 11 :.\n");
                    am=bam11;
                    seleccion="" + am + "";
                    break;
                case 12://
                    System.out.println("\n.: Boton 12 :.\n");
                    am=bam12;
                    seleccion="" + am + "";
                    break;
                default:
                    System.out.println("\nERROR: ~~> Boton invalida. :O(\n");   
                    
        }
        
    }
    }
    //si la radio esta apagada envia un mensaje
    else{
        System.out.println("La radio NO esta encendida");
    }
    }
    
    @Override
    //el metodo salir solo enviara un mensaje a la pantalla agradeciendo al usuario
    // por haber utilizado el programa
    public void salir(){
    
    System.out.println(" Gracias Por utilizar el programa");
    }
    
    // este metodo se encargara de actualizar los cambios hechos en la radio por el usuario
    // y a la vez mostrarlo en pantalla
     public String toString(){
        String descripcion;
        descripcion  = "+------------  Estado Principal de la radio   -------+ \n";
        descripcion += "| 1. Estado: " + onoff + "\n";
        descripcion += "| 2. Emisora: " + estacion + "\n";
        descripcion += "| 3. Canal: " + seleccion +   "\n" ;
        descripcion += "+----------------------------------------------------+ \n";
      return descripcion;
    }

    }
    
    
//prueba
    
   

   
